var arr = ['a', 'a', 'a', '*', 'b', 'b', '*', 'c', 'c', 'c', 'c', '*', 'd', 'd', 'd', 'd', 'd', 'd', 'd'];
// 期待输出:
// [ ['a', 3], ['*', 3], ['b', 2], ['c', 4], ['d', 7] ]

var result = [];
for (var i = 0; i < arr.length; i++) {
    var letter = arr[i];
    // 去result找有没有[letter, xxx]
    // 记录找到的小数组在result中的索引
    var resultIndex = -1;
    for (var j = 0; j < result.length; j++) {
        // result[i]: ['a', 3]
        // result[i][0]: 'a'
        if (result[j][0] === letter) {
            resultIndex = j;
            break;
        }
    }
    // 如果找到了就在原来的小数组上递增['a', 2] >>> ['a', 3]
    if (resultIndex > -1) {
        result[resultIndex][1]++;
    } else {
        // 如果没找到就生成初始的小数组['a', 1]
        result.push([letter, 1]);
    }
}

console.log(result);
